package bola
{
	// ========================================================================
	import fisica.Direcciones;
	
	import kapi.API;
	import kapi.io.teclado.Tecla;
	import kapi.io.teclado.Teclas;
	// ========================================================================

	public class Controlador
	{
		// ====================================================================
		private var _bola:Bola

		private var teclaIzquierda:Tecla
		private var teclaDerecha:Tecla
		private var teclaSalto:Tecla
		// ====================================================================

		// ====================================================================
		// CONSTRUCTOR
		// ====================================================================

		// --------------------------------------------------------------------
		public function Controlador(bola:Bola)
		{
			_bola = bola
			escucharTeclas()
			activar()
		}

		// ====================================================================
		// CONSTRUCTOR
		// ====================================================================

		// --------------------------------------------------------------------
		private function escucharTeclas():void
		{
			teclaIzquierda = new Tecla(Teclas.LEFT)
			teclaIzquierda.alPresionar.escuchar(desplazarAIzquierda)
			teclaIzquierda.alSoltar.escuchar(dejarDeDesplazar)

			teclaDerecha = new Tecla(Teclas.RIGHT)
			teclaDerecha.alPresionar.escuchar(desplazarADerecha)
			teclaDerecha.alSoltar.escuchar(dejarDeDesplazar)

			teclaSalto = new Tecla(Teclas.SPACE)
		}
		// --------------------------------------------------------------------
		private function dejarDeEscucharTeclas():void
		{
			teclaIzquierda.destruir()
			teclaDerecha.destruir()
			teclaSalto.destruir()
		}

		// --------------------------------------------------------------------
		private function activar():void {
			API.reloj.enCadaTick.escuchar(actualizar)
		}
		// --------------------------------------------------------------------
		private function desactivar():void {
			API.reloj.enCadaTick.dejarDeEscuchar(actualizar)
		}

		// --------------------------------------------------------------------
		private function actualizar():void
		{
			_bola.desplazarVerticalmente(Direcciones.abajo)
		}

		// --------------------------------------------------------------------
		private function desplazarAIzquierda():void {
			_bola.desplazarHorizontalmente(Direcciones.izquierda)
		}
		// --------------------------------------------------------------------
		private function desplazarADerecha():void {
			_bola.desplazarHorizontalmente(Direcciones.derecha)
		}
		// --------------------------------------------------------------------
		private function dejarDeDesplazar():void {
			_bola.dejarDeDesplazarHorizontalmente()
		}
	}
}